
struct Data
{
public:
	int a = 0;
	void print()
	{
		cout << "a：" << a << endl;
	}
	~Data()
	{
		cout << "~Data()" << endl;
	}
};

class Delete2
{
public:
	void operator()(Data* ptr)
	{
		ptr->a += 1;
		cout << "对a进行+1" << endl;
	}
};

void func(Data* ptr)
{
	shared_ptr<Data> s(ptr, Delete2());
	s->print();
}

int main()
{
	//unique_ptr<int[], Delete<int>> u(new int[3]{ 0 }, Delete<int>()); template<class T, class D> class unique_ptr<T[],D>


	/*shared_ptr<Data> s(new Data());
	func(s.get());*/
	int sum = 0;
	int a = 0;
	for (int i = 0;i < 3;++i)
	{
		cin >> a;
		sum += a;
	}
	cout << sum;


	//unique_ptr<int> u = make_unique<int>(10); //make_unique返回一个unique_ptr对象
	//if (u != nullptr)
	//{
	//	cout << "创建unique_ptr成功" << endl;
	//	cout << *u << endl;
	//}
	return 0;
}